var KontorXGMap = {
	// id, kontenera na GMap
	gmapId: 'gmap',
	gmapIdJavaScript: '#gmap-js',
	gmapIdCompatible: '#gmap-compatible',
	gmapIdContainer: '#gmap-container',

	// domyślne współrzędne
	baseLat: 50.03950183762877,
	baseLng: 19.9072265625,
	
	// klasa rekordu przechowującego dane lat, lang etc..
	rowClass: '.catalog',

	init: function() {
		// js jest włączone
	    $(this.gmapIdJavaScript).hide();
	    // pokaz kontener dla GMap
	    $(this.gmapIdContainer).show();

	    // Sprawdz czy GMap jest załadowany
	    if (typeof GBrowserIsCompatible == 'function') {
	        if (GBrowserIsCompatible()) {
	        	// inicjowanie gmap
	            var map = new GMap2(document.getElementById(this.gmapId));
	        	
	        	switch(this.getType()) {
		        	default:
		        	case 'rowset': this._renderRowset(map); break;
		        	case 'row': this._renderRowset(map); break;
	        	}
	        } else {
	            // przegladarke jest niekompatybilna
	            $(this.gmapIdCompatible).hide();
	        }
	    }
	},
	
	_renderRow: function(map) {
		map.addControl(new GSmallMapControl());

		// domyślne centrum
        var center = new GLatLng(this.baseLat, this.baseLng);
        map.setCenter(center, this.getZoom());

        var i = $('.latlang');
        var lat = i.attr('lat');
        var lng = i.attr('lng');

        if (parseFloat(lat) == 0 && parseFloat(lng) == 0) {
            return;
        }

        var latlng = new GLatLng(lat, lng);
        var marker = new GMarker(latlng);

        map.addOverlay(marker);
        map.setCenter(latlng, this.getZoom());
	},
	
	_renderRowset: function(map) {
		// kontrolki..
        map.addControl(new GSmallMapControl());

        // domyślne centrum
        var center = new GLatLng(this.baseLat, this.baseLng);
        map.setCenter(center, this.getZoom());

        // nr. porzadkowy
        var k = 0;
        // pierwszy rekord dla centrowanie..
        var first = false;
        // dla przesuwania mapy
        // var gmapContainer = $(this.gmapIdContainer);
        // var gmapContainerTop = gmapContainer.offset().top;

        // trzy poziomy rekordow
        var markerList = [[],[],[]];
        var markerType = 0;

        var self = this;
        
        $('.catalog').each(function(key,i) {
            var i = $(i);
            var lat = i.attr('lat');
            var lng = i.attr('lng');

            if (parseFloat(lat) == 0 && parseFloat(lng) == 0) {
                return;
            }

            // powiekszenie nr. kolejnego markera
            ++k;

            // zmiana stylizacji dla wpisu posiadajacego marker
            var h3 		= i.find('h3');
            var gIcon 	= $('<span/>')
            .attr('title','Pokaż na mapie')
            .addClass('gIcon');
            i.addClass('gIcon');
            i.append(gIcon);

            // Tworzenie ikony
            var icon = new GIcon(G_DEFAULT_ICON);
            var url	 = "http://gmaps-samples.googlecode.com/svn/trunk/markers/blue/blank.png";

            // Spcjalizacja
            if (i.hasClass('.promoPlus')) {
                url = "http://gmaps-samples.googlecode.com/svn/trunk/markers/orange/marker"+k+".png";
                icon.image = url;
                gIcon.css({
                    'background-image': "url('" + url + "')"
                });
                markerType = 2;
            } else
                if (i.hasClass('.promo')) {
                    url = "http://gmaps-samples.googlecode.com/svn/trunk/markers/blue/marker"+k+".png";
                    icon.image = url;
                    gIcon.css({
                        'background-image': "url('" + url + "')"
                    });
                markerType = 1;
            } else {
                url = "http://gmaps-samples.googlecode.com/svn/trunk/markers/green/marker"+k+".png";
                icon.image = url;
                gIcon.css({
                    'background-image': "url('" + url + "')"
                });
                markerType = 0;
            }

            var markerOptions = {
                title: h3.text(),
                icon:  icon
            };

            var latlng = new GLatLng(lat, lng);
            var marker = new GMarker(latlng, markerOptions);
            marker.bindInfoWindowHtml($('<div/>').html(i.clone().find('h3')).html());

            // klikniecie na gIcon
            gIcon.click(function() {
                map.setCenter(latlng, self.getZoom());
            });

            // centrowanie map
            if (false == first) {
                map.setCenter(latlng, self.getZoom());
                first = true;
            }

            markerList[markerType].push(marker);
        });

        // dzieki temu markery zwykle nie przeslaniaja markerow promowanych!
        for ( var i = 0; i < markerList.length; i++) {
            for ( var j = 0; j < markerList[i].length; j++) {
                map.addOverlay(markerList[i][j]);
            }
        }
	},

	// Ustawienie przybliżenia mapy
	_zoom: 12,
	setZoom: function(zoom) {this._zoom = parseInt(zoom)},
	getZoom: function() {return this._zoom},
	
	// ustawienia typu renderingu
	_type: 'rowset',
	setType: function(type) {this._type = type},
	getType: function() {return this._type}
};